// pages/weather/weather.js

const { cities, weatherImages } = require('./data.js'); // 引入城市和天气图片数据

Page({
  data: {
    cities: cities, // 使用导入的城市列表
    selectedCity: "", // 存储当前选择的城市
    isDropdownOpen: false, // 用于控制下拉框的显示状态，初始为隐藏
    date: "",  // 存储当前日期
    update_time: "",   // 存储最后一次天气数据更新的时间
    nums: 0, // 存储天气额外信息
    weather: "", // 存储天气情况
    temperature: "",  // 存储当前温度
    day: {}  // 存储当天的天气数据
  },

  // 切换下拉框的显示和隐藏状态
  toggleDropdown: function() {
    this.setData({
      isDropdownOpen: !this.data.isDropdownOpen // 切换下拉框的显示状态
    });
  },

   // 处理城市选择的事件
  onCitySelect: function(e) {
    const city = e.currentTarget.dataset.city; // 获取选择的城市
    this.setData({
      selectedCity: city,   // 更新当前选择的城市
      isDropdownOpen: false // 选择后关闭下拉框
    });

    // 调用获取天气的函数
    this.getWeather(city);
  },

  getWeather: function(city) {
   //修改为自己的接口
    const apiUrl = `http://v0.yiketianqi.com/free/v2031?city=${encodeURIComponent(city)}&appid=59151176&appsecret=fzj66L2M`;
  
    wx.request({
      url: apiUrl,
      method: 'GET',
      success: (res) => {
        if (res.statusCode === 200) {
          const weatherData = res.data;
  
          if (weatherData) {
            const dateParts = weatherData.date.split('-'); // 假设日期格式为 "YYYY-MM-DD"
            const formattedDate = `${dateParts[1]}/${dateParts[2]}`;
  
            // 格式化 weekWeather 中的日期
            const formattedWeekWeather = weatherData.week.map(item => {
              const [year, month, day] = item.date.split('-');
              return {
                ...item,
                date: `${month}/${day}` ,// 格式化为 MM/DD
                wea_image: this.getWeatherImage(this.simplifyWeatherCondition(item.wea)) // 为每个周天气数据选择图片
              };
            });
  
            // 根据天气状况选择图片
            let weatherImage = this.getWeatherImage(this.simplifyWeatherCondition(weatherData.day.wea));
  
            this.setData({
              city: weatherData.city,   // 设置城市名称
              cityid: weatherData.cityid,  // 设置城市 ID
              date: formattedDate,  // 设置日期            
              update_time: weatherData.update_time,  // 设置更新时间
              nums: weatherData.nums,
              day: {
                wea: this.simplifyWeatherCondition(weatherData.day.wea), // 简化天气描述
                tem: weatherData.day.tem + '°C', // 当前温度
                tem1: weatherData.day.tem1 + '°C', // 温度范围的最低值
                tem2: weatherData.day.tem2 + '~', // 温度范围的最高值
                humidity: weatherData.day.humidity + '',  // 湿度
                pressure: weatherData.day.pressure + 'hPa', // 气压
                win: weatherData.day.win,  // 风向
                win_speed: weatherData.day.win_speed + 'm/s', // 风速
                sunrise: weatherData.day.sunrise,  // 日出时间
                sunset: weatherData.day.sunset  // 日落时间
              },
              weekWeather: formattedWeekWeather, // 设置周天气数据
              isWeatherDataAvailable: true,  // 标记天气数据已获取
              weatherImage: weatherImage // 设置当前天气的图片
            }, () => {
              console.log(this.data);  // 打印获取天气的数据
            });
          }
        }
      }
    });
  },
  
  // 获取天气图片的函数
  getWeatherImage: function(weatherCondition) {
    return weatherImages[weatherCondition] || ''; // 使用导入的天气图片
  },

  // 简化天气描述的函数
  simplifyWeatherCondition: function(weatherCondition) {
    // 如果天气描述中包含“转”字，则只取第一个天气状态（如“转晴”会返回“晴”）
    if (weatherCondition.includes('转')) {
      const conditions = weatherCondition.split('转');
      return conditions[0]; // 返回第一个天气状态
    }
    return weatherCondition; // 如果没有“转”字，直接返回原始天气状态
  }
}); 